<?php

namespace Lib\Utils;
use Lib\Dao\UsuariosDao;
use Lib\Dao\LogsDao;
use Lib\Dao\GestoresDao;
use Lib\Utils\MenusUtils;
use Lib\Utils\Funciones;

class UsuariosUtils {
	
	var $usuariosDao;
	
	function __construct(){
		$this->usuariosDao = new UsuariosDao();
	}
	
	function getMenuUsuario($menu_defecto){
		$menu = json_decode($menu_defecto); //decodificamos el campo menu_defecto de la tabla usuario,donde indica que menu se carga por defecto.
		$aux = $this->usuariosDao->getMenusPorIdUsuarioYPermiso($menu->id,$menu->permiso); // Se carga el gestor(Menu) por defecto del usuario.		
		$return = MenusUtils::ordenarMenusConSubmenus($aux);
		return $this->montarHtmlMenuLateral($return);
	}
	
	function getMenuPerfilUsuari($rol){
		$menus = $this->usuariosDao->getMenusPorIdUsuarioYPermiso(0,$rol); //0 numero para los menus del usuario que no pertenecen a ningun gestor
		$return = MenusUtils::ordenarMenusConSubmenus($menus);
		return $this->montarHtmlMenuLateral($return);
	}
	
	function getMenuSuperiorUsuario($menu_sup){
		$menu_sup = json_decode($menu_sup);
		return $this->montarHtmlMenuSuperior($menu_sup);
	}
	
	//creamos el codigo html que corresponde a los menu del gestor en el lateral izquierdp de la web.
	function montarHtmlMenuLateral($info){
		
		$string = ''; //iniciamos el string donde ira el codigo html con el listado de menus.
		
		foreach($info as $menu){
			/** Monta string html con los menus principales que se mostrarán en la vista layout/default -> $menu['lateral'] **/
			if(!empty($menu->enlace)){ //si el menu tiene ruta definida,no puede tener submenus.
				$string .= '<li id="'.Funciones::stringMin(Funciones::replaceChar($menu->nombre,' ','_')).'"><a href="'.url($menu->enlace).'"><i class="fa '.$menu->icono.' zoom"></i><span>'.$menu->nombre.'</span></li></a>'; //menus sin submenus, montamos li con enlace
			}else{ //si no tiene enlace, es que contiene submenus.
				$string .= '<li id="'.Funciones::stringMin(Funciones::replaceChar($menu->nombre,' ','_')).'"><a href="javascript:;"><i class="fa '.$menu->icono.' zoom"></i><span>'.$menu->nombre.'</span></a>';
			}
			/** Si hay submenus concatena el codigo html  **/
			if(isset($menu->submenus)){ //si el menu contiene submenus
				
				$string .= '<ul class="acc-menu">'; //iniciamos string html del listado de submenus
		
				foreach($menu->submenus as $submenu){
					if(strpos($submenu->enlace, 'javascript:') !== false){ //si el enlace del submenu contiene una funcion javascript montamos diferente linea
						$string .= "<li><a href=".$submenu->enlace."><span>".$submenu->nombre."</span></a>";
					}else{ //el submenu contiene un enlace a una ruta normal 
						$string .= '<li>'.link_to($submenu->enlace,$submenu->nombre).'</li>';
					}
				}
				
				$string .="</ul></li>"; //cerramos listado despues de añadir los submenus
		
			}else{ //si no hay submenus cerramos el listado
				
				$string .="</li>";
			}

		}
		
		return $string;
	}
	
	function montarHtmlMenuSuperior($info){
		
		$string = '';
		
		foreach($info as $menu){
		
			$string .= '<div class="col-xs-6 col-sm-2 pull-right">';
			$string .= '<a href="javascript:loadAdmin('.$menu->id.');" class="shortcut-tiles '.$menu->color.'">';
			$string .= '<div class="tiles-body">';
			$string .= '<div class="pull-left">';
			$string .= '<i class="fa '.$menu->icono.'"></i>';
			$string .= '</div></div>';
			$string .= '<div class="tiles-footer">'.$menu->nombre.'</div>';
			$string .= '</a></div>';
		}						

		return $string;
		
	}

	function modificarMenuPredeterminado($id_usuario,$id_gestor){
		$gestoresDao = new GestoresDao();
		$id_gestor_recibida = $id_gestor;
		
		$menu_lateral = json_decode($this->usuariosDao->getCampoTablaPorUsuario($id_usuario,'menu_defecto')); //Recuperamos el menu por defecto actual del usuario.
		$menu_sup = json_decode($this->usuariosDao->getCampoTablaPorUsuario($id_usuario,'menu_sup')); //Recuperamos el menu superior actual del usuario con los gestores que puede seleccionar
		
		$nuevoMenuDefecto = new \stdClass(); //creamos nuevo objeto donde ira la info del campo menu_lateral de la tabla usuario
		
		//A continuacion, substituiremos la informacion del gestor que carga en el menu lateral por el gestor seleccionado en el menu superior.
		foreach ($menu_sup as $key=>$menu){
			if($menu->id == $id_gestor_recibida){
				//buscamos en la array el gestor selecionado y añadimos los valores que queremos al objeto de nuevo menu por defecto
				$nuevoMenuDefecto->id = $menu->id;
				$nuevoMenuDefecto->permiso = $menu->permiso;
				$nuevoMenuDefecto->vista = $gestoresDao->getVistaDefectoGestor($menu->id);
		
				//Recogemos la informacion del menu lateral substituido, y la añadimos a la array del menu superior
				$infoGestorLateral = $gestoresDao->getInfoGestorPorId($menu_lateral->id);
		
				$añadido['id'] = $infoGestorLateral->id;
				$añadido['nombre'] = $infoGestorLateral->nombre;
				$añadido['permiso'] = $menu->permiso;
				$añadido['vista'] = $infoGestorLateral->vista_portada;
				$añadido['color'] = $infoGestorLateral->color;
				$añadido['icono'] = $infoGestorLateral->icono;
				$añadido['activo'] = true;
				array_push($menu_sup,$añadido); //unimos arrays
		
				unset($menu_sup[$key]); //eliminamos del menu superior el gestor que hemos marcado como predeterminado
			}
		}
		
		//hace update de los campos menu_defecto y menu_sup de la tabla usuarios
		//intercambiando el menu lateral por el nuevo seleccionado y moviendolo al menu superior
		$result = $this->usuariosDao->updateCambioMenu($id_usuario,Funciones::raw_json_encode($nuevoMenuDefecto),Funciones::raw_json_encode(array_values($menu_sup)));
		
		return $result;
	}
	
	function setMenuDefecto($id_gestor,$permiso){
		
		$gestoresDao = new GestoresDao();
		
		$aux = array();
		$aux['id'] = $id_gestor;
		$aux['permiso'] = $permiso;
		$aux['vista'] = $gestoresDao->getVistaDefectoGestor($id_gestor);
	
		return json_encode($aux);
	}
	
	function setMenuSup($gestores){
		
		$gestoresDao = new GestoresDao();
		
		$aux = array();
		
		$i=0;
		foreach($gestores as $gestor){
			
			$gestor = explode(".",$gestor);
			$id_gestor = $gestor[0];
			$permiso_gestor = $gestor[1];
			
			$info = $gestoresDao->getInfoGestorPorId($id_gestor);

			$aux[$i]['id'] = $id_gestor;
			$aux[$i]['nombre'] = $info->nombre;
			$aux[$i]['permiso'] = $permiso_gestor;
			$aux[$i]['color'] = $info->color;
			$aux[$i]['vista'] = $info->vista_portada;
			$aux[$i]['icono'] = $info->icono;
			$aux[$i]['activo'] = true;
			$i++;
		}
		return Funciones::raw_json_encode($aux);
	}		
	
	static function infoPerfilUsuario($usuario){
		$aux = new \stdClass();
		$usuariosDao = new usuariosDao();
		$permiso = $usuariosDao->getPermisoUsuario($usuario->rol);
		$aux->permiso = $permiso->tipo;
		if($usuario->activo == true){ $aux->activo = '<i class="fa  fa-thumbs-o-up"></i>';}else{$aux->activo = '<i class="fa fa-thumbs-down"></i>';}
		return $aux;
	}
	
	
	function __destruct(){
		$this->usuariosDao;	
	}
	

	
	
	
}

?>